// Keywords: kin selection, inclusive fitness, selfish gene, greenbeard effect

initialize() {
	initializeMutationRate(1e-7);
	initializeMutationType("m1", 0.5, "f", 0.0);   // neutral
	initializeMutationType("m2", 0.5, "f", 0.0);   // green-beard
	m2.convertToSubstitution = F;
	m2.color = "red";
	initializeGenomicElementType("g1", m1, 1);
	initializeGenomicElement(g1, 0, 99999);
	initializeRecombinationRate(1e-8);
}
1 early() { sim.addSubpop("p1", 500); }
1 late() {
	target = sample(p1.genomes, 100);
	target.addNewDrawnMutation(m2, 10000);
}
1: late() {
	p1.individuals.tag = 0;
	
	for (rep in 1:50) {
		individuals = sample(p1.individuals, 2);
		i0 = individuals[0];
		i1 = individuals[1];
		i0greenbeards = i0.countOfMutationsOfType(m2);
		i1greenbeards = i1.countOfMutationsOfType(m2);
		
		if (i0greenbeards & i1greenbeards) {
			alleleSum = i0greenbeards + i1greenbeards;
			i0.tag = i0.tag - alleleSum;       // cost to i0
			i1.tag = i1.tag + alleleSum * 2;   // benefit to i1
		}
	}
}
mutationEffect(m2) { return 1.0 + individual.tag / 10; }
10000 early() { sim.simulationFinished(); }
